var webpack = require('webpack');
var express = require('express');
var Crawler = require('Crawler');
var fs = require('fs');
var config = require('./webpack.config.hot');
var proxyMiddleware = require('http-proxy-middleware')

var app = express();
var compiler = webpack(config);

// var c = new Crawler({
//         maxConnections: 10,
//         callback: function(error, res, done) {
//             if (error) {
//                 console.log(error)
//             } else {
//                 var $ = res.$;
//                 // 爬取页面结构dom树
//                 console.log($("html").html());
//                 // 爬取页面的图片
//                 console.log($('#lg > img').attr('src'));
//             }
//             done();
//         }

//     })
//     // 写入需要爬取网页的地址
// c.queue('http://www.baidu.com');

var c = new Crawler({
        encoding: null,
        jQuery: false, // set false to suppress warning message.
        callback: function(error, res, done) {
            if (error) {
                console.log(error.stack)
            } else {
                //将爬取好的文件通过fs模块写入文件
                fs.createWriteStream(res.options.filename).write(res.body);
            }
            done();
        }
    })
    //浏览器可以下载，但是服务端爬虫无效。反爬：检测你这个请求是通过浏览器发出来，还是服务端（解决方案：让服务端伪装成浏览器来发这个请求）
c.queue({
    url: "http://upos-hz-mirrorcos.acgvideo.com/upgcxcode/97/31/76823197/76823197-1-6.mp4?um_deadline=1550575994&platform=html5&rate=77500&oi=3085779014&um_sign=db48251bc5b1372571ebb345b6a1a098&gen=playurl&os=cos&trid=84e2a7ae166240fbb86a73d28ff5f1c1",
    filename: "./video/11111.mp4", //写入文件名 默认在根目录
    headers: { 'User-Agent': 'requests' } //让服务端伪装成客户端
});
app.use(require('webpack-dev-middleware')(compiler, {
    publicPath: config.output.publicPath,
    hot: true,
    historyApiFallback: true,
    inline: true,
    progress: true,
    stats: {
        colors: true,
    }
}));

//代理服务器
app.use('/shopro', proxyMiddleware({
    target: 'http://cangdu.org',
    changeOrigin: true,
}))

app.use(require('webpack-hot-middleware')(compiler));

//将其他路由，全部返回index.html
app.get('*', function(req, res) {
    res.sendFile(__dirname + '/index.html')
});

app.listen(8088, function() {
    console.log('正常打开8088端口')
});